cmake_minimum_required(VERSION 3.0)
project(ETHERCAT_1_AXIS)

# 指定目标系统是 Linux，常用于交叉编译场景（非本机编译）
set(CMAKE_SYSTEM_NAME Linux)
# 指定目标架构为 aarch64（ARM 64 位），也是交叉编译配置的一部分
set(CMAKE_SYSTEM_PROCESSOR aarch64)
# 指定 C 语言编译器，这里设置为交叉编译工具链的 gcc
set(CMAKE_C_COMPILER /home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/host/usr/bin/aarch64-linux-gnu-gcc)
# 生成 compile_commands.json 文件，方便 VSCode、clangd 等工具做代码提示和跳转
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

# 设置头文件搜索路径：
# 1. 工程里的 include/ 目录
# 2. EtherCAT 安装目录里的 include
# 3. mosquitto 库的 include 目录
include_directories(
    ${CMAKE_SOURCE_DIR}/include
    /home/tronlong/EtherCAT/_install/include
    /home/tronlong/T507/LinuxSDK/out/t507/tlt507-evm/longan/buildroot/build/mosquitto-1.5.8/include
)
# 设置库文件搜索路径，链接时会到这里找库文件（如 libethercat.so）
link_directories(
    /home/tronlong/EtherCAT/_install/lib
)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -O2")

# 搜索源文件，指定 main.c 和 src/ 下的所有 .c 文件作为源码
file(GLOB_RECURSE SOURCES
    ${CMAKE_SOURCE_DIR}/main.c
    ${CMAKE_SOURCE_DIR}/src/*.c
)

add_executable(ethercat_1_Axis ${SOURCES})

# 指定可执行文件需要链接的库：
# ethercat   -> EtherCAT 主站库
# pthread    -> POSIX 线程库
# mosquitto  -> MQTT 库
# m          -> 数学库 (libm, 提供 sin/cos 等数学函数)
target_link_libraries(ethercat_1_Axis 
                      ethercat
                      pthread 
                      mosquitto 
                      m
                      )
